科研星球

R语言统计与绘图:corrplot包可视化相关性矩阵的详细教程

今天学习下相关性矩阵的可视化,可以用来可视化相关性矩阵的包有corrplot包、corrgram包、GGally包、ggcorrplot包等,这些包在大部分情况下都可以满足需求。

今天先来学习corrplot包的使用,后面几天有空会详细讲解下另外三个包。


目  录

  • 1. 安装和加载R包

  • 2. 加载数据集

  • 3. 数据处理

    • 3.1 转换矩阵

    • 3.2 计算相关系数

  • 4. 简单绘制

  • 5. 自定义参数

    • 5.1 可视化方法

    • 5.2 矩阵显示类型

    • 5.3 绘制组合图形

    • 5.4 相关矩阵排序

    • 5.5 设置矩阵颜色

    • 5.6 设置文本标签属性

    • 5.7 设置图例属性

    • 5.8 设置图形外观

    • 5.9 设置显著水平


1. 安装和加载R包

corrplot包可以用来可视化相关矩阵,这个包中的参数很多,可以很详细的自定义图形。

第一步先安装和加载好R包。

install.packages("corrplot"# 安装包
library(corrplot) # 加载包

2. 加载数据集

使用mtcars内置数据集进行演示,先加载包,看下数据集的信息。

data(mtcars) # 加载数据集
head(mtcars, 10) # 查看数据集前10行

下载.jpeg

3. 数据处理

在使用mtcars数据集绘制图形前需要对数据集进行一些简单处理。

3.1 转换矩阵

绘图前可以将数据集转换为矩阵,当然,我也看到很多推文没有将数据集转换成矩阵,一样可以绘制图形,这一步也许可以省略。

mtcars <- as.matrix(mtcars)  # 转化为矩阵

下载 (1).jpeg

3.2 计算相关系数

在绘制图形前,先计算下相关系数,可以使用cor()函数,函数中有"pearson", "kendall", "spearman"三种方法计算,我们选择默认的"pearson"方法即可。

cor_mtcars <- cor(mtcars, method = 'pearson')
cor_mtcars

下载 (2).jpeg

4. 简单绘制

先简单绘制个基本图形,我们在后面慢慢调整参数自定义图形。

corrplot(cor_mtcars)

下载 (3).jpeg

如上图所示,一行代码就简单绘制出了图形。

在上图中,正相关用蓝色显示,负相关用红色显示。颜色强度和圆圈的大小与相关系数成正比。

下面我们开始慢慢调整参数设置图形。

5. 自定义参数

5.1 可视化方法

在上图中,可视化的方法method参数默认为"circle",也就是圆形显示。还可以使用"square","ellipse","number","pie","shade"和"color"显示,分别表示方形、椭圆形、数字、饼图、阴影、颜色。

layout(matrix(1:623)) # 分割绘图设备

corrplot(cor_mtcars, method = "square"# 方形
corrplot(cor_mtcars, method = "ellipse"# 椭圆形
corrplot(cor_mtcars, method = "number"# 数字
corrplot(cor_mtcars, method = "pie"# 饼图
corrplot(cor_mtcars, method = "shade"# 阴影
corrplot(cor_mtcars, method = "color"# 颜色

下载 (4).jpeg

5.2 矩阵显示类型

在基础图形中,矩阵显示为全矩阵显示,可以设置type参数为"lower"和"upper",来分别显示上三角和下三角矩阵。

layout(matrix(1:212)) # 分割绘图设备

corrplot(cor_mtcars, type = "lower"# 下三角矩阵
corrplot(cor_mtcars, type = "upper"# 上三角矩阵

下载 (5).jpeg

5.3 绘制组合图形

在上面我们可以绘制出上三角和下三角矩阵图形,然后可以使用add参数来绘制组合图形。

add为TRUE则可以图形添加到现有图形中。

corrplot(cor_mtcars, method = "square"
         type = "lower"# 下三角矩阵
corrplot(cor_mtcars, method = "pie"
         type = "upper", add = TRUE# 上三角矩阵

下载 (6).jpeg

如上图所示,先绘制一个下三角图形,再将上三角图形添加到图形上。

5.4 相关矩阵排序

在corrplot包中,使用order参数设置相关性矩阵排序,排序方法有original(默认)、AOE、FPC、hclust、alphabet等5种。

我们看看其他四种排序是什么样的。

layout(matrix(1:422)) # 分割绘图设备

corrplot(cor_mtcars, order = "AOE"# 特征向量角序
corrplot(cor_mtcars, order = "FPC"# 第一主成分顺序
corrplot(cor_mtcars, order = "hclust"# 按层次聚类
corrplot(cor_mtcars, order = "alphabet"# 按字母顺序

下载 (7).jpeg

当order为"hclust"按层次聚类时,层次聚类方法也有几种,有"ward", "ward.D", "ward.D2", "single", "complete", "average", "mcquitty", "median"或"centroid"等,可以使用hclust.method参数来指定。

同时也可以设置addrect参数来设置可视化矩阵上聚类矩形的数量,为NULL时默认不添加矩形。

可以使用rect.col、rect.lwd参数来设置聚类矩形的颜色和线宽。

layout(matrix(1:623)) # 分割绘图设备

corrplot(cor_mtcars, order = "hclust"# 按层次聚类
         hclust.method = "ward.D2"#层次聚类方法
corrplot(cor_mtcars, order = "hclust"
         hclust.method = "median"
corrplot(cor_mtcars, order = "hclust"
         hclust.method = "single"
corrplot(cor_mtcars, order = "hclust"
         hclust.method = "complete"
         addrect = 2# 设置聚类矩形的数量
corrplot(cor_mtcars, order = "hclust"
         hclust.method = "average"
         addrect = 2, rect.col = "red")  # 设置聚类矩形的颜色
corrplot(cor_mtcars, order = "hclust"
         hclust.method = "mcquitty"
         addrect = 4, rect.lwd = 3# 设置聚类矩形的线宽

下载 (8).jpeg

5.5 设置矩阵颜色

使用col参数来设置颜色,还可以使用bg参数设置背景颜色。

layout(matrix(1:313)) # 分割绘图设备
col = colorRampPalette(c('blue''white''red'))(40)
corrplot(cor_mtcars, method = "color")
corrplot(cor_mtcars, method = "color", col = col) # 矩阵颜色
corrplot(cor_mtcars, method = "circle", bg = "grey"# 背景颜色

下载 (9).jpeg

还可以设置其他的颜色。

layout(matrix(1:623)) # 分割绘图设备
corrplot(cor_mtcars, order = "hclust", col = heat.colors(100))
corrplot(cor_mtcars, order = "hclust", col = terrain.colors(100))
corrplot(cor_mtcars, order = "hclust", col = cm.colors(100))
corrplot(cor_mtcars, order = "hclust", col = gray.colors(100))
library(RColorBrewer)
corrplot(cor_mtcars, order = "hclust", col = brewer.pal(n = 8, name = "RdYlBu"))
corrplot(cor_mtcars, col = brewer.pal(n = 8, name = "PuOr"))

下载 (10).jpeg

5.6 设置文本标签属性

layout(matrix(1:422)) # 分割绘图设备
corrplot(cor_mtcars, tl.pos = "n"# 不显示文本标签
corrplot(cor_mtcars, tl.pos = "lt"# 在左边和顶部显示
corrplot(cor_mtcars, tl.cex = 1.5# 设置文本标签的缩放倍数
corrplot(cor_mtcars, tl.col = "black"# 设置文本标签的颜色

下载 (11).jpeg

5.7 设置图例属性

颜色标签,也就是图形旁边的图例,可以使用cl.pos、cl.cex、cl.ratio、cl.align.text、cl.offset等参数来设置。

5.7.1 设置图例位置

corrplot(cor_mtcars, cl.pos = "n"# 不显示图例
corrplot(cor_mtcars, cl.pos = "r"# 图例放在右边
corrplot(cor_mtcars, cl.pos = "b"# 图例放在底部

下载 (12).jpeg

5.7.2 设置图例文本属性

corrplot(cor_mtcars, cl.cex = 1.5# 设置图例中数字标签的缩放倍数
corrplot(cor_mtcars, cl.ratio = 2.0# 数字,设置图例的宽度
corrplot(cor_mtcars, cl.align.text = "l"# 字符,设置图例中的数字标签的对齐方式

下载 (13).jpeg

5.8 设置图形外观

可以设置图形的标题、四边间距、网格线等。

layout(matrix(1:422)) # 分割绘图设备

corrplot(cor_mtcars, mar = c(2.22.6,2.8,1.9)) # 设置图形四边间距
corrplot(cor_mtcars, addgrid.col = "black"# 设置网格线
corrplot(cor_mtcars, outline = "black"# 设置圆形、椭圆形等外边框
corrplot(cor_mtcars, tl.pos = "n"
         title  = "R语言统计与绘图 公众号"# 添加图形标题

下载 (14).jpeg

5.9 设置显著水平

可以在图形上显示显著性水平。

layout(matrix(1:422)) # 分割绘图设备
res1 <- cor.mtest(mtcars, conf.level = .95)

corrplot(cor_mtcars, p.mat = res1$p, 
         sig.level = .2# 设置p值>0.2的不显示
corrplot(cor_mtcars, p.mat = res1$p, 
         sig.level = .05# 设置p值>0.05的不显示
corrplot(cor_mtcars, p.mat = res1$p, 
         insig = "blank"# 擦除p值>0.05的相关系数,设置为空白
corrplot(cor_mtcars, p.mat = res1$p, 
         insig = "p-value")

下载 (15).jpeg

参考资料

  1. corrplot()函数帮助文件


没有账号?